home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 August / macformat-027.iso / mac / Shareware City / Developers / MDP-80 Folder / Programs / _printHex.ASM next >
Encoding:
Assembly Source File  |  1993-10-22  |  1.3 KB  |  49 lines  |  [TEXT/ALFA]

  1. ; _printHex    Outputs accumulator as a pair of hex digits
  2. ; _printHex2   Outputs accumulator (msb) and X (lsb) as hex number
  3.  
  4. ; RTK, 10.22.93
  5.  
  6. ; uses Monitor.OBJ - to be incorporated into system monitor
  7.  
  8. #org 1000
  9.  
  10. #equ cout F845  ; print character in A (Monitor.OBJ)
  11.  
  12. ;  _printHex - output A as a hexadecimal number, A is unchanged
  13.  
  14. ._printHex    sta $06         ; monitor scratch location
  15.             and #f0            ; mask lsn
  16.             rsh                ; and move msn to lsn
  17.             rsh
  18.             rsh
  19.             rsh
  20.             cmp #09             ; greater than 9?
  21.             bgt hex1        ; yes, output letter
  22.             clc                ; no, add $30 to get
  23.             adc #30            ; ASCII for digit
  24.             jsr cout        ; print first digit
  25.             jmp next        ; go to next digit
  26. .hex1        clc             ; add $37 to 
  27.               adc #37         ; get letter
  28.               jsr cout        ; and print digit
  29. .next        lda $06            ; get original from scratch
  30.             and #0f            ; kill upper bits
  31.             cmp #09         ; greater than 9?
  32.             bgt hex2        ; yes, output letter
  33.             clc                ; no, add $30 to get
  34.             adc #30            ; ASCII for digit
  35.             jsr cout        ; print second digit
  36.             jmp end            ; go to next digit
  37. .hex2        clc                ; add $37 to 
  38.               adc #37             ; get letter
  39.               jsr cout        ; and print digit
  40. .end        lda $06            ; recover initial A value
  41.             rts                ; exit
  42.  
  43. ;  _printHex2 - outputs A & X as 16-bit number - destroys A
  44.  
  45. ._printHex2    jsr _printHex    ; print A
  46.             txa                ; put X in A
  47.             jsr _printHex    ; print it
  48.             rts                ; exit
  49.